package delphorm.dao.personne;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import delphorm.entite.personne.DroitGroupe;
import delphorm.entite.personne.IdDroitGroupe;
import delphorm.entite.personne.Utilisateur;


public class ImplHibernateUtilisateur extends HibernateDaoSupport implements IUtilisateur {

	public Utilisateur ajouterUtilisateur(Utilisateur u) {
		getHibernateTemplate().save(u);
		return u;
	}

	public Utilisateur editerUtilisateur(Utilisateur u) {
		getHibernateTemplate().update(u);
		return u;
	}

	public Utilisateur identifierUtilisateur(Utilisateur u) {
		String requete = "from delphorm.entite.personne.Utilisateur u where u.password='"+u.getPassword()+"' AND u.login='" + u.getLogin() +"'";
		List l = getHibernateTemplate().find(requete);
		if(l.size() <= 0)
			return null;
		else
			return (Utilisateur)l.get(0);
	}

	public List getAllOrderByNom() {
		String requete = "from delphorm.entite.personne.Utilisateur u order by u.nom";
		List l = getHibernateTemplate().find(requete);
		return l;
	}

	public Utilisateur getUtilisateurParId(Long id) {
		String requete="from delphorm.entite.personne.Utilisateur u where id="+id;
		List l = getHibernateTemplate().find(requete);
		if(l.size() <= 0)
			return null;
		else
			return (Utilisateur)l.get(0);
	}

	public void supprimerUtilisateurParId(Long id) {
		Utilisateur u = getUtilisateurParId(id);
		//TODO exception si null
		getHibernateTemplate().delete(u);
	}

	public Utilisateur enregistrerUtilisateur(Utilisateur u) {
		// TODO Auto-generated method stub
		getHibernateTemplate().saveOrUpdate(u);
		return u;
	}

	public Utilisateur getUtilisateurParLogin(String login) {
		
		String requete="from delphorm.entite.personne.Utilisateur u where login='"+login+"'";
		List l = getHibernateTemplate().find(requete);
		if(l.size() <= 0)
			return null;
		else
			return (Utilisateur)l.get(0);
	}

	public DroitGroupe ajouterGroupeUtilisateur(DroitGroupe droitGroupe) {
		if(droitGroupe.getId() == null)
		{
			IdDroitGroupe id = new IdDroitGroupe(droitGroupe.getUtilisateur().getId(), droitGroupe.getGroupe().getId());
			droitGroupe.setId(id);
		}
		getHibernateTemplate().save(droitGroupe);
		return droitGroupe;
	}

}
